iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
0

前言

大家好,今天主題一樣圍繞著 ROS 的基礎核心架構,昨天介紹完了 Topic 和 node 的關係,今天就要介紹將整個系統串聯起來的重要人物 - Messages

Messages 是什麼?

昨天我們透過 rostopic list -v 來檢視 Topics 的詳細資料,這邊先幫大家複習一下,請看到下圖:

https://ithelp.ithome.com.tw/upload/images/20200925/201298075pB1FRFcQ8.png

那當時就有提到了,中間那欄是這個 Topics 傳遞 Message 的格式,也就是資訊的名稱,注意這裡不是單純的123,而是有分類被命名過後的資料。我們也可以透過 rostopic type [topic_name] 來看某個特定 Topic 的 Message 格式,只是相比之下筆者認為 rostopic list -v 快速許多,我們藉由下面的兩張圖片可以看到他們的差別,其中紅框為一樣的訊息格式,但顯示的方式不同而已,依當時需要的情況去做呼叫。

以下為 rostopic type [topic_name][ros]:

https://ithelp.ithome.com.tw/upload/images/20200925/20129807jqWAUlADsW.png
https://ithelp.ithome.com.tw/upload/images/20200925/20129807FdSRH2Egc2.png

現在我們了解每個 Topics 有其對應的 Message 格式,接著我們可以透過 rosmsg show [message_name] 來了解所謂的格式長什麼樣子:

https://ithelp.ithome.com.tw/upload/images/20200925/20129807RHeTyWeqML.png

這裡我們用 [geometry_msgs/Twist] 來做一個簡單的說明,這項 Message 裡主要分為 [Vector3 linear][Vector3 angular] ,這兩項就是隸屬於 geometry_msg (幾何資訊)裡 Twist 分類下的變數,分別控制3軸向的前進速度和旋轉,之後進入自走車的環節時,這項資料也有助於你設定自走車的行程,可多查看不同的訊息,了解他們分別的作用,也有利於加深印象。

其中 [Vector3 linear][Vector3 angular] 又各自包含 float64 x, float64 y, float64 z,代表說這個格式下可以同時攜帶6個64位元不同的浮點數在 Nodes 之間做交換。

至於不同的 Message 格式可以攜帶的參數型別也可以不同,以 Python 為例, int, str, bool 等型別也是相當常見的,這裡只跟大家做一個基本的聊解,其他相關的參數格式設定和有關 Message 格式更詳細的資訊可以參考ROS官方網站

結語

Message 的格式相當多元,可以根據自己的需求選擇訊息結構。而除了 Message 結構之外,在 ROS 專案中對於 Message 的命名也是相當重要的,一個有邏輯的命名規則能讓日後在執行、維護時更加順利。
https://ithelp.ithome.com.tw/upload/images/20200925/20129807Dx6kPc5sLH.png


上一篇
[DAY 9] Nodes與Topics的關係
下一篇
[DAY 11] Publisher && subscriber 的應用 1
系列文
ROS系統控制自走車搭配點雲雷達(隧道檢測裝置)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言